package com.zxl.util;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class ChineseToEnglish

{

	// ------------------------将汉字转换为全拼-------------------------------
	public static String getPingYin(String src) {

		char[] t1 = null;

		t1 = src.toCharArray();

		String[] t2 = new String[t1.length];

		HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();

		t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);

		t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

		t3.setVCharType(HanyuPinyinVCharType.WITH_V);

		String t4 = "";

		int t0 = t1.length;

		try {

			for (int i = 0; i < t0; i++) {

				// 判断是否为汉字字符

				if (java.lang.Character.toString(t1[i]).matches(
						"[\\u4E00-\\u9FA5]+")) {

					t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);

					t4 += t2[0];

				} else {

					t4 += java.lang.Character.toString(t1[i]);

				}

			}

			// System.out.println(t4);

			return t4;

		} catch (BadHanyuPinyinOutputFormatCombination e1) {

			e1.printStackTrace();

		}

		return t4;

	}

	// ----------------------------------------返回中文的首字母--------------------

	public static String getPinYinHeadChar(String str) {

		String convert = "";

		for (int j = 0; j < str.length(); j++) {

			char word = str.charAt(j);

			String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);

			if (pinyinArray != null) {

				convert += pinyinArray[0].charAt(0);

			} else {

				convert += word;

			}

		}

		return convert;

	}

	// -------------------------将字符串转移为ASCII码-----------------------------

	public static String getCnASCII(String cnStr) {

		StringBuffer

		strBuf

		=

		new

		StringBuffer();

		byte[]

		bGBK

		=

		cnStr.getBytes();

		for (int

		i = 0; i < bGBK.length; i++) {

			// System.out.println(Integer.toHexString(bGBK[i]&0xff));

			strBuf.append(Integer.toHexString(bGBK[i] & 0xff));

		}

		return strBuf.toString();

	}

	// --------------------------测试拼音转汉字是否正确----------------------------

	public static void main(String[] args) {

		// 返回拼音的全拼样式
		System.out.println(getPingYin("西安市"));

		// 返回拼音的首字母
		System.out.println(getPinYinHeadChar("西安市"));

		// 返回拼音的ASCII
		System.out.println(getCnASCII("西安市"));
	}

}